package demo03;

import java.util.HashMap;
import java.util.LinkedHashMap;

/*
 *  java.util.LinkedHashMap<K,V>集合 extends HashMap<K,V>集合
 *  Map 接口的哈希表和链表列表实现，具有可预知的迭代顺序
 *  底层原理：哈希表 + 链表（记录元素的顺序）
 */
public class Demo01LinkedHashMap {
    public static void main(String[] args) {
        HashMap<String, String> hashMap = new HashMap<>();
        hashMap.put("a", "a");
        hashMap.put("c", "c");
        hashMap.put("b", "b");
        hashMap.put("d", "d"); // 存入顺序：acbd；取出顺序：abcd
        System.out.println(hashMap); // {a=a, b=b, c=c, d=d}，无序集合的存取顺序可能不一致

        LinkedHashMap<String, String> linkedHashMap = new LinkedHashMap<>();
        linkedHashMap.put("a", "a");
        linkedHashMap.put("c", "c");
        linkedHashMap.put("b", "b");
        linkedHashMap.put("d", "d"); // 存入顺序：acbd；取出顺序：acbd
        System.out.println(linkedHashMap); // {a=a, c=c, b=b, d=d}，有序集合的存取顺序一致
    }
}